model=tf.keras.Sequential()
model.add(tf.keras.layers.Dense(units=16, activation='relu'))
model.add(tf.keras.layers.Dense(units=32, activation='relu'))
model.build(input_shape=(None, 4))
model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 16) 80
_________________________________________________________________
dense_1 (Dense) (None, 32) 544
=================================================================
Total params: 624
Trainable params: 624
Non-trainable params: 0
_________________________________________________________________
build(변수 지연 생성)로 파라미터 입력 크기를 지정(4)하여 모델을 정의한 후 특정 크기의 변수를 초기화했다.
for v in model.variables:
print('{:20s}'.format(v.name), v.trainable, v.shape)
dense/kernel:0 True (4, 16)
dense/bias:0 True (16,)
dense_1/kernel:0 True (16, 32)
dense_1/bias:0 True (32,)
각 층은 가중치 행렬 kernel과 절편 벡터 bias를 가진다.
모델을 생성할 때, 활성화 함수, 변수 초기화, 또는 파라미터 규제등을 설정해야 한다.tf.keras.activations(활성화 함수)
tf.keras.initializers(파라미터 초기화)
tf.keras.regularizers(층의 파라미터 규제-과대적합 방지)
첫 번째 층에 커널과 절편 변수의 초기화를 지정, 두 번째 층에서 커널(가중치 행렬)에 L1 규제를 적용
model=tf.keras.Sequential()
model.add(
tf.keras.layers.Dense(units=16,
activation=tf.keras.activations.relu,
kernel_initializer=tf.keras.initializers.glorot_uniform(),
bias_initializer=tf.keras.initializers.Constant(2.0)))
model.add(
tf.keras.layers.Dense(units=32,
activation=tf.keras.activations.sigmoid,
kernel_regularizer=tf.keras.regularizers.l1))
컴파일(compile)할 때, 모델 설정옵티마이저의 타입
훈련에 사용할 손실 함수
훈련, 검증 테스트 데이터셋에 대한 성능 리포팅에 사용할 지표
SGD 옵티마이저, 이진 분류를 위한 크로스 엔트로피 손실 함수를 이용정확도, 정밀도, 재현율을 사용하는 모델
model.compile(
optimizer=tf.keras.optimizers.SGD(learning_rate=0.001),
loss=tf.keras.losses.BinaryCrossentropy(),
metrics=[tf.keras.metrics.Accuracy(),
tf.keras.metrics.Precision(),
tf.keras.metrics.Recall(), ])
손실 함수최적화 알고리즘 중 SGD와 Adam이 가장 널리 이용된다.
손실 함수는 선택은 문제에 따라 다르다.(ex 회귀: 평균 제곱 오차 손실을 사용 가능)
크로스 엔트로피 손실 함수는 분류 작업에 사용할 수 있다.
정밀도, 재현율, 정확도, AUC, 거짓 음성과 거짓 양성 점수 모두 분류 모델을 평가하는데 적절하다.
compile을 한 이후, model.fit() 메서드를 호출하여 모델을 훈련할 때 훈련 성능(검증데이터일 경우 검증 성능)을
평가하기 위해 지정한 측정 지표와 손실을 기록한 값이 반환된다.(기록을 이용해서 학습 과정을 분석할 수 있다.)
compile() 메서드 매개변수 소문자 문자열 사용옵티마이저로 SGD 클래스의 기본값을 사용할 때, optimizer=‘sgd’와 같이 소문자 문자열로 쓸 수 있다.
loss 매개변수
- 이진 크로스 엔트로피: ‘binary_crossentropy’
- 범주형 크로스 엔트로피: ‘categorical_crossentropy’
- 평균 제곱 오차: ‘mse’
- 평균 절대값 오차: ‘mae’
metrics 매개변수
- 정확도: ‘accuracy’
- 평균 제곱 오차: ‘mse’
- 평균 절댓값 오차: ’mae'